1. Field of the Invention
This invention relates generally to computer adapter cards, and more particularly to techniques for terminating a bus having peripheral devices connected thereto.
2. Description of the Related Art
As the power of applications, processors, and storage devices increase, high-end computer users are seeking ways to optimize their computer systems to achieve the highest level of performance. For example, most of today's computer systems are highly modular systems that enable them to be modified and equipped with just the right software and hardware. Typically, a computer's mother board includes several peripheral component interconnect (PCI) slots that are configured to receive adapter cards, such as SCSI adapter cards. These SCSI adapter cards act as a reliable and efficient interface between the host computer and any number of peripheral devices. In general, once a SCSI adapter card is inserted into the host computer's PCI slot, a SCSI bus (typically in the form of a ribbon cable) is used to interconnect one or more peripheral devices (also known as target devices) to the SCSI host adapter.
Although SCSI adapter technology is one of the most advanced techniques used to enable fast and efficient exchange of data between a computer and peripheral devices, the SCSI bus that interconnects the host adapter and its peripheral devices must be properly terminated. In general, even though a typical SCSI bus can make a connection to several peripheral devices, each end of the bus must be terminated. For example, if a SCSI bus has a hard drive at one end of the bus and a scanner at the other end, the termination circuitry of both the hard drive and the scanner should be enabled to ensure proper data transmission along the SCSI bus.
In today's more flexible host adapter implementations, host adapter cards typically have more than one built-in connector that enable interconnection to both internal and external peripheral devices. To facilitate this discussion, FIG. 1 shows a conventional computer system 100 that includes a host adapter 102. The host adapter 102 is generally configured to communicate with the CPU of the computer system 100 via a PCI bus or other well known communication buses. In this example, the host adapter 102 has two connectors 104a and 104b. The external connector 104b allows connection to external peripheral devices, such as peripheral device 110 that is coupled to the host adapter 102 via a SCSI cable 107 having a connector 108a. For external devices, up to 7 SCSI peripheral devices can be daisy-chained one to another. Internally, the host adapter 102 can be connected to internal peripheral devices 112a and 112b via connectors 108b that are physically part of a SCSI bus 105. The SCSI bus 105 is also shown connected via a connector 108b to the internal connector 104a of the host adapter 102.
In this exemplary configuration, the host adapter 102 has two connectors 104a and 104b that are respectively connected to external and internal peripheral devices. As a result, proper termination will require that peripheral devices 110 and 112b be responsible for terminating the SCSI bus. This is because peripheral devices 110 and 112b define the ends of the bus and the host adapter 102 physically lies between both ends of the bus. Consequently, the host adapter 102 must not be set for "termination" because it is not connected to one end of the SCSI bus. Of course, if the host adapter 102 did not have peripheral device 110 connected to connector 104b, the host adapter 102 would have to be set for termination because it would define one end of the bus. This would also apply if the host adapter 102 was only connected to peripheral device 110 and no internal peripheral devices were connected to the SCSI bus 105.
In efforts to automate the configuration of proper termination settings on the host adapter 102, several software-only termination techniques have been used. Initially, the software is charged with determining which type of host adapter model is connected to the host computer system. As is well known, the rapid design and development of SCSI host adapters has led to the creation of a tremendous variety of host adapters, each having a custom number of connectors that support various bandwidth capabilities. Therefore, any software that is developed to detect when peripheral devices are connected between physical connectors (i.e., 104a/104b) must be able access all of the configuration data for that host adapter.
To accomplish this, host adapter termination software is conventionally provided with multitude of look up tables that hold the connector configuration information for associated host adapters. However, as more host adapters are designed and placed on the market, new unique look up tables have to be created and integrated into the host adapter termination software. As can be appreciated, this continual creation of unique lookup tables can be very burdensome and time consuming in view of the rapid pace in which new products created and marketed to the public. In fact, when a large number of lookup tables have to be accounted for and managed by the termination software, many times the termination software will erroneously enable the termination of the host adapter 102, even when there are peripheral devices connected to both internal and external connectors. In addition, when users initially set up there host adapter termination, complicated setup dialogs have to be properly configured before the termination software can automatically sense when devices are connected to the host adapter's connectors and then set the termination of the host adapter 102.
In view of the foregoing, there is a need for circuitry that automatically assists generic termination software to set the termination state of a host adapter depending on the circuitry's detection of connected peripheral devices.